package py.com.sole.dao.impl;



import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import py.com.sole.dao.EstadoDao;
import py.com.sole.dao.DaoFactory;
import py.com.sole.model.Estado;

public class EstadoImpl implements EstadoDao {
	EntityManager em = DaoFactory.getEm();

	public void addEstado(Estado estado) {
		try {
			em.getTransaction().begin();
			em.persist(estado);
			em.getTransaction().commit();
		} catch (Exception e) {
			// System.out.println("Error al intentar persistir "+e);
			e.printStackTrace();
		}

	}

	public void deleteEstado(int id) {
		try {
			em.getTransaction().begin();
			em.remove(this.getEstadoById(id));
			em.getTransaction().commit();
		} catch (Exception e) {
			
		}
	}

	public void updateEstado(Estado estado) {
		try {
			em.getTransaction().begin();
			em.merge(this.getEstadoById(estado.getId()));
			em.getTransaction().commit();
		} catch (Exception e) {
			// TODO: handle exception
		}

	}
		

	public Estado getEstadoById(int id) {

		return (Estado) em.createQuery(
				"SELECT c FROM Estado c where c.id = " + id).getSingleResult();
	}

	@SuppressWarnings(value = "all")
	public List<Estado> getEstadoes() {
		return em.createQuery("SELECT e FROM Estado e WHERE e.activo=TRUE").getResultList();
	}

	@Override
	public Estado getEstadoByName(String value) {
		try {
			Query q = em.createNamedQuery("Estado.findByDescripcion");
			q.setParameter("descripcion", value);
			return (Estado) q.getSingleResult();
		} catch (Exception e) {
			return null;
		}
	}

	@Override
	public List<Estado> getEstados() {
		
		try {
			Query q = em.createNamedQuery("Estado.findAll");
			
			List<Estado> resultList =  q.getResultList();
			return resultList;
		} catch (Exception e) {
			return null;
		}
	}

}